package com.wgy.day23.Collection集合接口;

import java.util.ArrayList;
import java.util.Collection;

/*
集合与数组的区别:
1.数组的长度死固定的是不可改变的,集合的长度是可以改变的
2.数组中存储的是同一类型的元素,可以存储基本数据类型值.集合存储的都是对象,而且对象的类型可以不一致.
3.数组有索引值概念,可以是用for循环进行遍历,但是集合有的有有的没有,集合一般使用iterator进行遍历-->增强for循环

Collection是所有单列集合的父接口,因此Collection中定义了单列集合(List和Set)通用的一些方法,这些方法可以用于操作所有的单列集合
            List(接口):1.有序的集合(存储和取出元素的顺序相同)
                      2.允许存储重复的元素
                      3.有索引值,可以使用普通的for循环
                      4.实现类有:Vector集合  Arraylist集合 LinkedList集合
            Set(接口):1.既有序的集合(存储和取出元素的顺序相同),也有无序的集合
                      2.不允许存储重复的元素
                      3.没有有索引值,不可以使用普通的for循环
                      4.实现类有:TreeSet集合(无序集合)    HashSet集合(无序集合)
                                LinkedHashSet集合(有序集合)

Collection的常用方法有:
public boolean add():把给定的对象添加到当前集合中
public void clear():清空集合中的所有元素
public boolean remove():把给定的对象在当前集合中删除
public boolean contains():判断当前集合中是否包含给定的对象
public boolean isEmpty():判断集合是否为空
public int size(): 返回集合中元素的个数
public Object[] toArray():把集合中的元素,存储到数组中

注意事项:集合是有泛型的,在创建对象的时候要注明是什么类型,不写就默认是Object类
*/
public class Demo01Collection {
    public static void main(String[] args) {
        //创建集合对象,可以使用多态
        Collection<String> coll=new ArrayList<>();
        System.out.println(coll); // [] 重新了toString方法

        //往集合里面添加对象 返回值是一个boolean值,一般都是true,所以可以不用接收.
       Boolean b1= coll.add("张三");
        System.out.println(b1);//true
        coll.add("李四");
        coll.add("王五");
        coll.add("赵六");
        coll.add("田七");
        System.out.println(coll); //[张三, 李四, 王五, 赵六, 田七]

        //去掉集合内的元素
        coll.remove("李四");
        Boolean b2=coll.remove("王二");
        System.out.println(b2);  //false,因为集合内没有王二
        System.out.println(coll);//[张三, 王五, 赵六, 田七]

        //验证元素是否在该集合内
       Boolean b3= coll.contains("王二");
        Boolean b4= coll.contains("王五");
        System.out.println(b3);//false
        System.out.println(b4);//true

        //查看集合的长度
       int num= coll.size();
        System.out.println(num);//4
        //判断集合是否为空
       boolean b5= coll.isEmpty();
        System.out.println(b5); //false

        //把集合内的元素存储到数组当中
        Object[] arr =coll.toArray();
        System.out.println(arr); //[java.lang.Object;@16b98e56
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }

        //把集合内的元素清空,但是不删除集合,集合依然存在
        coll.clear();
        System.out.println(coll); //[]
      boolean b6=  coll.isEmpty();
        System.out.println(b6);//true

    }
}
